iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
1
自我挑戰組

資工系大一課程/日常筆記系列 第 20

[Day 20] 週五寫程設作業

  • 分享至 

  • xImage
  •  

其實這跟 Day 15 寫的 UVA12468: Zapping 很類似,所以我參考了一些(?
Day 15 傳送門

題目是說有一副鎖,而從原本的樣子到解開需要轉幾次,而數字最多只有5位數,輸入有兩個,一個是原本的樣子,一個是正確密碼,輸出要轉幾次。

#include <stdio.h>  
int numlen(int n){ //計算該數字位數
    int l=1,i;  
    for(i=0;i<4;i++){  
        if( (n/10) > 0 ) l++;  
        else break;  
        n /= 10;  
    }  
    return l;  
}  
int cnum(int n,int m){ //計算需要轉幾次
    int num[2];  
    if(n>m){  
        num[0] = n-m; //沒跨過9到0  
        num[1] = m+10-n; //跨過9到0  
    }  
    else{  
        num[0] = m-n; //沒跨過9到0  
        num[1] = n+10-m; //跨過9到0  
    }  
    if(num[0]>=num[1]){  
        return num[1];  
    }  
    else{  
        return num[0];  
    }  
}  
int main(){  
    int x,y;  
    while(scanf("%d %d",&x,&y)!=EOF){  
        int len,sum=0;  
        if(numlen(x)>=numlen(y)) len = numlen(x); //計算該數字位數以排除有0的狀況
        else len = numlen(y);  
        int i;  
        for(i=0;i<len;i++){  
            sum += cnum((x%10),(y%10));  
            x /= 10;  
            y /= 10;  
        }  
        printf("%d\n",sum);  
    }  
    return 0;  
}  

上一篇
[Day 19] 第三堂程式設計
下一篇
[Day 21] 週六寫程設作業
系列文
資工系大一課程/日常筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言